A specialized array of computers appeared in the early 21st century referred to as blade servers which are most often found in server farms processing web based data such as emails, as described in U.S. Pat. No. 6,411,506. The blades in blade servers are relatively small server computers grouped in a common chassis called a blade enclosure. In the typical blade enclosure, the blades share a common power supply and data bus which provides the means for the blades to receive and transmit data and commands. Also included in the blade enclosure is a switch server, sometimes called a management module, which acts as a job controller for the blades, as described in U.S. Pat. No. 7,209,347.
An example of a blade server is shown in FIG. 1. The blade chassis, 100, includes removable server blades 101a-n. The blades 101, share a common backplane 102 that provides blade power from a power source 103 and a shared communication bus 104 which is usually an Ethernet bus. All external commands and data are shared over the internal communication bus 104. One or more management modules 105 coordinate the server blade operations. An external connection of the communication bus 106 provides the blades with access to a common memory source 107 such as NAS (Network Attached Storage) storage. The blades 101a-n typically have their own private memory 108a-n for use in their local processing.
A modification to the server blade management module was a later addition to blade enclosures and was added to allow the server blades to access a common set of USB devices such as USB memory devices, as described in U.S. Pat. No. 7,412,544. In the cited patent, means are provided to connect each blade with a plurality of external USB device ports with a blade server management module acting as the bridge between the blades and the server blade enclosure USB host ports. Due to the multiple types of USB devices such as keyboards, mouse's, CD-ROM's, and USB sticks, the blade servers can take advantage of many additional functions. A simplified diagram of this use of external USB devices in a blade server is shown in FIG. 2. The additional I/O network of FIG. 2, 110, plus additional hardware in the blade server management module, 105, allow USB devices 112a-m to communicate with the server blades 101a-n. 
Although blade servers can be viewed as an array of computers, they are not considered an “array computer” which normally denotes a group of computers that are tightly coupled together both in hardware and software execution, as discussed in “A Decade of RCS” Proc. IEEE Conf. on Design, Automation and Test in Europe (2001). A primary distinction of an array computer is the “architecture” of the array which describes the interconnecting path between the different computing nodes making up the array.
The review article of array computer architectures in reference 4 presents the wide range of complex hardware and software implementations that are associated with past array processing solutions. A good example of an actual array processing computer is the parallel APL machine built around 1990 by Jurgen Sauermann, “A Parallel APL Machine”1990 ACM 089791-371. FIG. 3 shows a simplified block diagram of the Sauermann machine. The Sauermann machine 300 has all the elements of an array computer in that a master processor 301 is tightly coupled to an array of slave processors 304 via a common communication network 303 and dual ported memory 302 that is shared been the master computer and the slave processors. The slave processors also connected to a network an array of FPGA's 305 that perform mathematical calculations. The Sauermann machine was dedicated to a specific task of processing programs written in the computer scripting language, APL. A few of the Sauermann machines were built and successfully used by the German Post office.
Although a successful project, the Sauermann machine architecture is not easily adapted to other applications. Its specialized hardware and software are typical of array processing. It is mentioned because the present invention grew out of an interest in the target application of the Sauermann machine and has led to our attempt to present an array processing architecture that can be widely used from both a software and hardware standpoint and at the same time provide an architecture which is highly adaptable for future advances in computer hardware and software.
In addition to arranging computing elements in large connected arrays, a more recent method has been to build single integrated processors which include multiple CPU cores, as described in “Multicore Processors A Necessity” by Bryan Schauer (csa-discoveryguides-multicore review, September 2008). Multi-core processors such as the ones available from Intel and AMD can greatly increase the speed of computation. But they require special hardware and software to take advantage of the multi core design. In addition, they suffer one major fault that increases the complexity of programming and slows computation; namely, the access of all cores to external storage is thru a single physical channel.
The primary goal of an array computer is to take the processing power of a single computer and create a machine with N computers whose processing speed is N times faster than a single computer. This simple goal has led to a wide variety of software and hardware solutions which have generally led to complex and or expensive solutions.
The current invention provides means for creating an array computer housed in a blade server type enclosure that achieves a linear gain in processing power with additional computing nodes while providing a simple programming model for array processing by using a hierarchical computer architecture with disjoint computing nodes and a novel distributed memory structure.